import router from '@/router'
import Cookie from 'cookiejs'
import {createStore} from 'vuex'
export default createStore({
    state:{
        isCollapse:true,
        CurrentMent:null,
        tabsList:[
            {
                path:'/',
                name:'home',
                label:'首页',
                icon:'home'
            }
        ],
        //菜单栏参数
        menu:[],
        token:''
    },
    mutations:{
        //控制菜单是否隐藏
        updateIsCollapse(state,payload){
            state.isCollapse=!state.isCollapse
        },
        //菜单路径
        selectMenu(state,val){
            //判断 如果等于home 面包屑数据为空 如果不等于空 赋值
            // val.name=='home' ? (state.CurrentMent=null):(state.CurrentMent=val)
            if (val.name=='home') {
                state.CurrentMent=null
            } else {
                state.CurrentMent=val
                //查早tag数据里面又没传过来的数据，如果有就什么都不做，如果没有就添加数据
                let result= state.tabsList.findIndex(item=>item.name===val.name)
                result == -1 ?state.tabsList.push(val):''
            }
        },
        //删除tags
        closeTab(state,val){
            //查找 找到后删除
            let res= state.tabsList.findIndex(item=>item.name===val.name)
            state.tabsList.splice(res,1)
        },
        //侧边栏数据
        setMenu(state,val){
           state.menu=val
           //数据持久化 防止丢失
           localStorage.setItem('menu',JSON.stringify(val))
        },
        //从localstorage拿menu数据 在App页面使用
        getMenu(state,router){
            console.log(router,'router');
            //如果拿不到数据，直接退出
            if (!localStorage.getItem('menu')) {
                return
            }
            //从localstorage拿数据 然后赋值 
            const menu=JSON.parse(localStorage.getItem('menu'))
            state.menu=menu
            //数组
            const menuArray=[]
            //遍历menu数据
            menu.forEach(item => {
                //如果有子菜单就遍历
                if (item.children) {
                    //得到url路径，然后添加到数据中
                    item.children=item.children.map(item=>{
                       let url=`../views/${item.url}.vue`
                       item.component=()=>import(url)
                       return item
                    })
                    menuArray.push(...item.children)
                }else{
                    let url=`../views/${item.url}.vue`
                    item.component=()=>import(url)
                    menuArray.push(item)
                }
            });
             menuArray.forEach(item=>{
                //给home1添加子路由
                router.addRoute('home1',item)
             })
        },
        //退出时候清除缓存
        clearMenu(state){
            state.menu=[],
            localStorage.removeItem('menu')
        },
        //token持久化
        setToken(state,val){
          state.token=val
          Cookie.set('token',val)
        },
        //清除
        clearToken(state){
            state.token=''
            Cookie.remove('token')
        },
        // 得到token
        getToken(state){
            state.token=state.token ||  Cookie.get('token')
        }

    }
})